home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / numconv / numconv.ex_ / numconv.ex / 3081 / SOURCE / 5 < prev   
Encoding:
Text File  |  1999-07-20  |  3.7 KB  |  118 lines

  1. Attribute VB_Name = "mdlSayWords"
  2. Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
  3. Private sndString
  4.  
  5. Sub ResSound(SoundID)
  6. sndPlaySound StrConv(LoadResData(SoundID + 101, "CUSTOM"), vbUnicode), 7
  7. End Sub
  8.  
  9. Sub SayNumber(Number As Double, Optional rMode As rModes = Normal)
  10. Dim Word As String, Ret As Integer
  11. sndString = ""
  12. Word = Num2Word(Number, rMode)
  13. If Word = "" Or Word = "Error" Then Exit Sub
  14. Do While Word <> ""
  15.     Word = PlayNextWord(Word)
  16. Loop
  17. For i = 1 To Len(sndString)
  18.     Do
  19.         Ret = sndPlaySound(StrConv(LoadResData(Asc(Mid(sndString, i, 1)) + 101, "CUSTOM"), vbUnicode), 6)
  20.     Loop While Ret = 33
  21. Next i
  22. End Sub
  23.  
  24. Function PlayNextWord(Word As String) As String
  25. Restart:
  26. If Left(Word, 1) = " " Or Left(Word, 1) = "," Or Left(Word, 1) = "-" Then
  27.     Word = Mid(Word, 2)
  28.     GoTo Restart
  29. End If
  30. Dim NewWord As String
  31. Do While Left(Word, 1) <> " " And Left(Word, 1) <> "," And Left(Word, 1) <> "-" And Word <> ""
  32.     NewWord = NewWord & Left(Word, 1)
  33.     Word = Mid(Word, 2)
  34. Loop
  35. PlayWord NewWord
  36. PlayNextWord = Word
  37. End Function
  38.  
  39. Sub PlayWord(Word As String)
  40. Word = LCase(Word)
  41. Select Case Word
  42.     Case "one": AddToString 0
  43.     Case "two": AddToString 1
  44.     Case "three": AddToString 2
  45.     Case "four": AddToString 3
  46.     Case "five": AddToString 4
  47.     Case "six": AddToString 5
  48.     Case "seven": AddToString 6
  49.     Case "eight": AddToString 7
  50.     Case "nine": AddToString 8
  51.     Case "ten": AddToString 9
  52.     Case "eleven": AddToString 10
  53.     Case "twelve": AddToString 11
  54.     Case "thirteen": AddToString 12
  55.     Case "fourteen": AddToString 13
  56.     Case "fifteen": AddToString 14
  57.     Case "sixteen": AddToString 15
  58.     Case "seventeen": AddToString 16
  59.     Case "eighteen": AddToString 17
  60.     Case "nineteen": AddToString 18
  61.     Case "twenty": AddToString 19
  62.     Case "thirty": AddToString 20
  63.     Case "forty": AddToString 21
  64.     Case "fifty": AddToString 22
  65.     Case "sixty": AddToString 23
  66.     Case "seventy": AddToString 24
  67.     Case "eighty": AddToString 25
  68.     Case "ninety": AddToString 26
  69.     Case "hundred": AddToString 27
  70.     Case "thousand": AddToString 28
  71.     Case "million": AddToString 29
  72.     Case "first": AddToString 30
  73.     Case "second": AddToString 31
  74.     Case "third": AddToString 32
  75.     Case "forth": AddToString 33
  76.     Case "fifth": AddToString 34
  77.     Case "sixth": AddToString 35
  78.     Case "seventh": AddToString 36
  79.     Case "eighth": AddToString 37
  80.     Case "nineth": AddToString 38
  81.     Case "tenth": AddToString 39
  82.     Case "eleventh": AddToString 40
  83.     Case "twelfth": AddToString 41
  84.     Case "thirteenth": AddToString 42
  85.     Case "fourteenth": AddToString 43
  86.     Case "fifteenth": AddToString 44
  87.     Case "sixteenth": AddToString 45
  88.     Case "seventeenth": AddToString 46
  89.     Case "eighteenth": AddToString 47
  90.     Case "nineteenth": AddToString 48
  91.     Case "twentieth": AddToString 49
  92.     Case "thirtieth": AddToString 50
  93.     Case "fortieth": AddToString 51
  94.     Case "fiftieth": AddToString 52
  95.     Case "sixtieth": AddToString 53
  96.     Case "seventieth": AddToString 54
  97.     Case "eightieth": AddToString 55
  98.     Case "ninetieth": AddToString 56
  99.     Case "hundredth": AddToString 57
  100.     Case "thousandth": AddToString 58
  101.     Case "millionth": AddToString 59
  102.     Case "and": AddToString 60
  103.     Case "point": AddToString 61
  104.     Case "negative": AddToString 62
  105.     Case "a": AddToString 63
  106.     Case "an": AddToString 64
  107.     Case "half": AddToString 65
  108.     Case "quarter": AddToString 66
  109.     Case "quarters": AddToString 67
  110.     Case "fifths": AddToString 68
  111.     Case "eighths": AddToString 69
  112. End Select
  113. End Sub
  114.  
  115. Sub AddToString(Number As Byte)
  116. sndString = sndString & Chr(Number)
  117. End Sub
  118.